# 安装：pip install bs4
# 数据解析：（标签定位）（根据标签、属性方法提取数据）
# BeautifulSoup库：（1）需要实例化一个BeautifulSoup对象，将需要解析的内容加载到这个对象中，利用‘lxml’解析器解析
# （2）根据标签、属性进行定位，提取想要的内容

# 导库
from bs4 import BeautifulSoup

# 实例化对象：（1）本地文件：soup = BeautifulSoup(open('本地文件'，encoding='utf-8'),'lxml')
# （2）服务器响应文件:soup = BeautifulSoup(r.text,'lxml')

soup = BeautifulSoup(open('1.html',encoding='utf-8'),'lxml')

# 非常重要的语法知识，希望大家归纳总结到一起
# soup.标签名:返回第一个标签
# print(soup.a)
# print(soup.li)

# soup.标签名.attrs:返回的是第一个标签的所有属性、属性值
# print(soup.a.attrs)

# bs4库有一些比较重要的函数
#（1）find:元素对象
# soup.find(标签名):返回第一个标签=soup.标签
# print(soup.find('a'))
# soup.find('标签'，属性=属性值)
# print(soup.find('a',title='百度'))
# print(soup.find('a',id='jd'))
# print(soup.find('a',class_='a2'))

# (2)find_all函数：返回的元素全在列表里面
# soup.find_all(标签)
# print(soup.find_all('a'))
# print(soup.find_all('li'))

# soup.find_all([标签1，标签2，标签3])：返回多个标签数据，必须要将多个标签名写到列表里
# print(soup.find_all(['a','li']))

# soup.find_all(标签，limit=):返回的是前几个标签数据
# print(soup.find_all('li',limit=3))
# print(soup.find_all('li',limit=2))
# print(soup.find_all('li',limit=1))
# print(soup.find_all('li',limit=4))

# （3）select函数：查询（推荐）
# soup.select(标签):返回所有标签，在列表里
# print(soup.select('a'))
# print(soup.select('li'))

# 属性选择器：
# # soup.select(标签[属性])
# print(soup.select('li[id]'))
# # soup.select(标签[属性=属性值])
# print(soup.select('li[id="冀J"]'))

# 类选择器：class,用“.”表示class
# .属性值 找到对应标签
# print(soup.select('.a1'))
# print(soup.select('.a2'))
# print(soup.select('.a3'))

# id:唯一（身份证）,用“#”表示id
# #属性值 找到对应标签
# print(soup.select('#冀A'))
# print(soup.select('#冀J'))
# print(soup.select('#jd'))
# print(soup.select('#c3'))

# 层级选择器：
# （1）后代选择器：找孙子:' '
# print(soup.select('div li'))
# (2)子代选择器：找儿子：">"
# print(soup.select('div>ul>li'))

# 获得标签文本：<标签>文本</标签>：text
# print(soup.select('span')[0].text) # [1,2,3]:下表索引
# print(soup.select('span')[1].text) # [1,2,3]:下表索引
# print(soup.select('li')[3].text) # [1,2,3]:下表索引

# 获得属性值：attrs['属性名']
# print(soup.select('a')[0].attrs['href'])
# print(soup.select('a')[1].attrs['href'])

